package co.edu.usbcali.hibernate.logica;

import java.util.Date;
import java.util.List;

import co.edu.usbcali.hibernate.modelo.Clientes;
import co.edu.usbcali.hibernate.modelo.Mascotas;
import co.edu.usbcali.hibernate.modelo.Vacunas;
import co.edu.usbcali.hibernate.modelo.VacunasMascotas;
import co.edu.usbcali.hibernate.modelo.VacunasMascotasId;
import co.edu.usbcali.hibernate.persistencia.DAOFactory;
import co.edu.usbcali.hibernate.persistencia.EntityManagerHelper;
import co.edu.usbcali.hibernate.persistencia.IMascotasDAO;
import co.edu.usbcali.hibernate.persistencia.IVacunasDAO;
import co.edu.usbcali.hibernate.persistencia.IVacunasMascotasDAO;
import co.edu.usbcali.hibernate.persistencia.VacunasMascotasDAO;

public class VacunaMascotaLogica implements IVacunasMascotasLogica {
	
	IVacunasMascotasDAO vacunasMascotasDAO = DAOFactory.getVacunasMascotasDAO();

	public void borrarVacunasMascotas(VacunasMascotasId id, Mascotas mascotas,
			Vacunas vacunas, Date vacmasFecha) throws Exception {
		// TODO Auto-generated method stub

	}

	public List<VacunasMascotas> consultarVacunasMascotas() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	public VacunasMascotas consultarVacunasMascotasPorId(VacunasMascotasId id)
			throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	public void crearVacunasMascotas(VacunasMascotasId id, Date vacmasFecha) throws Exception {
		
		VacunasMascotas vacunasMascotas = null;		
		try {
			if (id == null){
				throw new Exception("El codigo de la mascota y de la vacuna es obligatorio");
			}
			if (vacmasFecha == null) {
				throw new Exception("La fecha de la vacunacion es obligatoria");
			}
			EntityManagerHelper.beginTransaction();
			IMascotasDAO dao = DAOFactory.getMascotaDAO();
			Mascotas mascotas = dao.findById(id.getMasCodigo());
			IVacunasDAO dao2 = DAOFactory.getVacunasDAO();
			Vacunas vacunas = dao2.findById(id.getVacCodigo());
			
			vacunasMascotas = vacunasMascotasDAO.findById(id);
			if (vacunasMascotas != null) {
				throw new Exception("El registro de vacunacion ya existe");
			}			
			vacunasMascotas = new VacunasMascotas(id, mascotas, vacunas, vacmasFecha);
			vacunasMascotasDAO.save(vacunasMascotas);
			EntityManagerHelper.commit();
			
			
		} catch (Exception e) {
			EntityManagerHelper.rollback();
			e.printStackTrace();
			throw e;
		} finally {
			EntityManagerHelper.closeEntityManager();
		}

	}

	public void modificarVacunasMascotas(VacunasMascotasId id,
			Mascotas mascotas, Vacunas vacunas, Date vacmasFecha)
			throws Exception {
		// TODO Auto-generated method stub

	}

}
